Typically, serial communication systems use parity to safeguard data integrity during transmission from a transmitter to a receiver. Communications standards are used to ensure compatibility between different systems and to facilitate software development and portability. Hardware has also been developed that incorporates these standards. One such standard specifies that parity may accompany each transmission of serial data. The transmitted parity bit can then be used by the receiver to check data integrity of the serial data. This technique, however, may require additional time or bandwidth for data transmission because a parity bit must be added to the stream of data.
Data integrity, however, has become less of a problem in some situations. Specifically, low noise cables, system enclosures and interconnects reduce the frequency of such errors to a very low level. In other words, in some circumstances errors do not happen as frequently as had been assumed when the standards arose. Moreover, the level of protection afforded by simple parity checking generally has become inadequate for many situations that require error protection. Despite these developments, hardware and software produced today still support the standard referenced above. Parity checking, therefore, is sometimes unnecessary and goes unused in systems that support it. Consequently, the time or bandwidth allocated for transmitting the parity bit is frequently wasted.
A related problem is the need for the exchange of control messages between two asynchronous entities. For example, when a personal computer is communicating with a modem through a EIA232/V.24 cable, sometimes one entity must instruct the other entity to stop or resume sending data. This is commonly referred to as flow control. Flow control may be implemented in two ways: hardware flow control and software flow control. Hardware flow control is typically accomplished by adding wires to the cable. The additional wires carry signals dedicated to flow control. Consequently, hardware flow control may add complexity to the sending and receiving entities and the cable.
Software flow control is usually accomplished by inserting special characters into the data stream at the transmitting entity. The receiving entity is then responsible for recognizing the special character and distinguishing it from normal data that happens to be equal to a special character. Consequently, software flow control may require additional significant software complexity on the part of the receiver.